// const path = require('path')
// const debug = process.env.NODE_ENV !== 'production'
const CompressionWebpackPlugin = require('compression-webpack-plugin');

//配置请求转发的代理
//定义代理的对象
let proxyObj = {};

//拦截http请求
proxyObj['/'] = {
    ws: false,  //关掉websocket
    target: 'http://localhost:7070', //目标转发的地址
    // target: 'http://www.pghhh.top', //目标转发的地址
    changeOrigin: true,
    pathRewrite:{  //请求地址重写
        '^/': ''  //拦截到的地址不去修改它
    }
}


module.exports ={
    //基本路径  ---这个千万不能省，不然你的静态资源找不到
    publicPath: "./",
    //输出文件目录
    outputDir: "dist",
    //代理
    devServer:{  //配置开发环境
        // host: 'localhost',
        host:"0.0.0.0",
        port: 8081, //端口号
        open: true, //配置游览器自动访问
        proxy: proxyObj  //代理对象
    },

    //配置cdn引入vue和elementui
    // configureWebpack 值为对象，会通过 webpack-merge 合并到最终的配置
    configureWebpack: {
        externals: {
            // CDN 的 Element 依赖全局变量 Vue， 所以 Vue 也需要使用 CDN 引入
            'vue': 'Vue',
            // 属性名称 element-ui, 表示遇到 import xxx from 'element-ui' 这类引入 'element-ui'的，
            // 不去 node_modules 中找，而是去找 全局变量 ELEMENT
            'vue-router': 'VueRouter',
            'element-ui': 'ELEMENT',
            'axios': 'axios',
            'vuex': 'Vuex',
        }
    },

    //使用compression-webpack-plugin打包时压缩js
    productionSourceMap: false,// 设为false，既可以减少包大小，也可以加密源码
    transpileDependencies: ['element-ui'],//指定某个库在打包的时候需要编译
    chainWebpack(config) {
        config.plugins.delete('prefetch');//默认开启prefetch(预先加载模块)，提前获取用户未来可能会访问的内容 在首屏会把这十几个路由文件，都一口气下载了 所以我们要关闭这个功能模块
        if (process.env.NODE_ENV !== 'development') {
            // 对超过10kb的文件gzip压缩
            config.plugin('compressionPlugin').use(
                new CompressionWebpackPlugin({
                    test: /\.(js|css|html)$/,// 匹配文件名
                    threshold: 10240,
                })
            );
        }
    },


    // //webpack-bundle-analyzer
    // chainWebpack: config => {
    //     if (process.env.use_analyzer) { // 添加分析工具
    //         config
    //             .plugin('webpack-bundle-analyzer')
    //             .use(require('webpack-bundle-analyzer').BundleAnalyzerPlugin)
    //     }
    // },

    // //  image-webpack-loader 图片压缩配置
//     chainWebpack(config) {
//         // 图片压缩
//         config.module
//             .rule('images')
//             .use('image-webpack-loader')
//             .loader('image-webpack-loader')
//             .options({ bypassOnDebug: true })
//             .end()
//     },

};



